// pages/category/category.js

import {
  request
} from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 分类左侧数据
    categoryLeftList: [],
    // 分类右侧数据
    categoryRightList: [],
    // 左侧当前状态索引
    currentIndex: 0,
    // 右侧菜单距离顶部距离
    scrollTop: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    /**
     * 步骤：
     * 1 获取本地存储
     * 2 存在，判断时间
     * 3 不存在，发送请求并保存本地存储
     * 
     * 格式:
     *  {time:Date.now(),data:[...]}
     */

    // 1 获取本地存储
    let cates = wx.getStorageSync("cates");
    if (!cates) {
      console.log("分页缓存不存在，发送请求获取数据...");
      // 2 不存在，请求获取分类数据
      this.getCategoryData();
    } else {
      // 3 存在，判断时间  5分钟
      if (Date.now() - cates.time <= 1000 * 60 * 5) {
        console.log("分页缓存存在，并且时间有效，从缓存中获取数据...");
        // 时间有效
        this.Cates = cates.data;
        this.setData({
          categoryLeftList: this.Cates.map(v => v.cat_name),
          categoryRightList: this.Cates[0].children
        });
      } else {
        console.log("分页缓存存在，但是时间过期，重新发送请求...");
        // 时间过期，重新发送请求
        this.getCategoryData();
      }
    }
  },


  /**
   * 获取分类数据  ES7语法
   */
  async getCategoryData() {
    /* // ES6 语法
    request({
      url: "/categories"
    }).then((data) => {
      // 把 Cates 数据 放在全局上
      this.Cates = data.message;

      // 保存本地存储
      wx.setStorageSync("cates", {
        time: Date.now(),
        data: this.Cates
      });

      // 赋值
      this.setData({
        categoryLeftList: this.Cates.map(v => v.cat_name),
        categoryRightList: this.Cates[0].children
      })
    })
    */
    // 使用 ES7 语法的 asunc await 来发送请求
    const res = await request({
      url: "/categories"
    });
    this.Cates = res.message;
    wx.setStorageSync("cates", {
      time: Date.now(),
      data: this.Cates
    });
    this.setData({
      categoryLeftList: this.Cates.map(v => v.cat_name),
      categoryRightList: this.Cates[0].children
    })
  },

  /**
   * 左侧分类菜单监听点击事件
   */
  handleLeftNavTap(event) {
    const {
      index
    } = event.target.dataset;
    this.setData({
      currentIndex: index,
      categoryRightList: this.Cates[index].children,
      scrollTop: 0
    });
  }
})